const Utils = (() => {
    /**
     * 随机产生[min, max]的随机数
     * @param {*} min 最小值
     * @param {*} max 最大值
     * @returns
     */
    function randomNum(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min)
    }
    /**
     * 随机为每张图片产生三对坐标
     * @param {*} xSize 横坐标跨度
     * @param {*} ySize 纵坐标跨度
     * @param {*} picCount 图片总数
     * @param {*} count 每张图片生成次数
     * @returns
     */
    function randomMapData(xSize, ySize, picCount, count) {
        if (!count) count = 3
        if (count % 3 !== 0) {
            console.log('count必须是三的倍数')
        }
        let arr = []
        const positionSet = new Set()
        // 每张图
        for (let i = 1; i <= picCount; i++) {
            // 每张图三个图标
            for (let j = 0; j < count; j++) {
                const x = Utils.randomNum(0, xSize - 1)
                const y = Utils.randomNum(0, ySize - 1)
                if (positionSet.has(x + ',' + y)) {
                    j--
                } else {
                    positionSet.add(x + ',' + y)
                    arr.push({
                        x: x,
                        y: y,
                        img: i
                    })
                }
            }
        }
        return arr
    }
    const getImageLoadPromise = url => {
        return new Promise(resolve => {
            const image = new Image()
            image.src = url
            image.onload = () => {
                resolve(image)
            }
        })
    }
    return {
        randomNum,
        randomMapData,
        asyncLoadImage: async () => {
            const promiseArr = []
            for (let i = 1; i <= 10; i++) {
                // 这里用相对路径../无法正确加载图片，原因未知
                const path = `imgs/${i}.png`
                promiseArr.push(getImageLoadPromise(path))
            }
            return await Promise.all(promiseArr)
        }
    }
})()
